Projet 7 : Implémentation d'un modèle de scoring¶
Mission 2 - Intégrez et optimisez le système MLOps
Partie 1 : Etude du Data Drift¶
Problématique :¶
- Travailler en tant que Data Scientist au sein d'une société financière, nommée "Prêt à dépenser", qui propose des crédits à la consommation pour des personnes ayant peu ou pas du tout d'historique de prêt.
- L’entreprise souhaite mettre en œuvre un outil de “scoring crédit” pour calculer la probabilité qu’un client rembourse son crédit, puis classifie la demande en crédit accordé ou refusé. Elle souhaite donc développer un algorithme de classification en s’appuyant sur des sources de données variées (données comportementales, données provenant d'autres institutions financières, etc.)
Missions :
- Construire un modèle de scoring qui donnera une prédiction sur la probabilité de faillite d'un client de façon automatique.
- Analyser les features qui contribuent le plus au modèle, d'une manière générale (feature importance globale) et au niveau d'un client (feature importance locale), afin, dans un soucis de transparence, de permettre à un chargé d'études de mieux comprendre le score attribué par le modèle.
- Mettre en production le modèle de scoring de prédiction à l'aide d'une API et réaliser une interface de test de cette API.
- Mettre en œuvre une approche globale MLOps de bout en bout, du tracking des expérimentations à l'analyse en production du data drift.
Importation des modules et des jeux de données¶
In [1]:
import warnings
warnings.filterwarnings("ignore")
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from evidently import ColumnMapping
from evidently.report import Report
from evidently.metric_preset import DataDriftPreset
In [2]:
# Import unprocessed data
train = pd.read_csv('application_train.csv')
test = pd.read_csv('application_test.csv')
# Import processed data
train_processed = pd.read_csv("data_train_feature_engine.csv",index_col=0)
test_processed = pd.read_csv("data_test_feature_engine.csv",index_col=0)
I. Création du rapport avec les données non traitées¶
- La Data Drift se produit lorsque les propriétés statistiques des données d'entrée changent au fil du temps, entraînant un changement dans la distribution des données.
- La nécessité de surveiller la dérive des données découle du fait que les modèles de machine learning s'appuient sur des données précises et à jour pour faire des prévisions ou prendre des décisions précises. Cependant, dans de nombreux secteurs, les données peuvent changer au fil du temps, ce qui entraîne une dérive des données.
Mode de fonctionnement du rapport avec Evidently :
Il suit une logique par défaut pour choisir le test de dérive approprié pour chaque variable dans les données en fonction du:
- type de la variable : données catégorielles, numériques ou textuelles
- nombre d'observations dans le jeu de données de référence
- nombre de valeurs uniques dans la variable.
Le test du dérive à utiliser est détecté et le test correspondant est appliqué sur les données de référence et les données actuelles et un score de dérive est obtenu pour chaque variable, avec lequel il décide s'il y a une dérive de données dans la variable ou non.
In [4]:
# Initializing the report
data_drift_report = Report(metrics=[DataDriftPreset(),])
# Applying the report
data_drift_report.run(current_data=test,reference_data=train.drop("TARGET", axis=1),column_mapping=None)
data_drift_report
Out[4]:
II. Création du rapport avec les données traitées¶
In [3]:
# Initializing the report
data_drift_report = Report(metrics=[DataDriftPreset(),])
# Applying the report
data_drift_report.run(current_data=test_processed,reference_data=train_processed.drop("TARGET",axis=1),column_mapping=None)
data_drift_report
Out[3]: